/**
 * Created by geo on 17/4/18.
 */

/**
 * 使用临时构造函数实现: C.prototype.__proto__ = P.prototype
 * 可以防止P.prototype被修改
 * 同时使用super保存其父类的引用
 * 还要手动修正C的原型上的构造器constructor,否者就是P了 (C.prototype.__proto__.constructor , 也就是 P.prototype.constructor )
 * 其实实现的就像 C.prototype = Object.create(P.prototype); (这里C.prototype.constructor还是C)
 * @param C 子类
 * @param P 父类
 */
function inherit(C, P){
    var F = function(){};
    F.prototype = P.prototype;
    C.prototype = new F();
    C.super = P.prototype;
    console.log(C.prototype.constructor);
    console.log(C.prototype.__proto__.constructor);
    console.log(P.prototype.constructor);
    C.prototype.constructor = C;
    console.log(C.prototype.constructor);
}

///////test///////
function C() {

}
function P() {

}
inherit(C, P);
//[Function: P]
//[Function: P]
//[Function: P]
//{ [Function: C] super: P {} }